package main

/**
* @Author: DengLibin
* @Date: Create in 2023-01-10 14:23:32
* @Description: 给你一个 升序排列 的数组 nums ，请你 原地 删除重复出现的元素，
使每个元素 只出现一次 ，返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
不要使用额外的空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
*/

/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-10 14:24:16
 * @Description: 删除重复元素 双指针法
 */
func removeDuplicates(nums []int) int {
	var newLen = 1 // 至少一个元素 默认长度 为1
	var index1 int = 0
	var index2 int = 0
	for index2 < len(nums) {
		if nums[index1] == nums[index2] {
			index2++
		} else {
			index1++
			nums[index1] = nums[index2]
			newLen++
		}
	}

	return newLen
}

func removeDuplicates2(nums []int) int {
	var newLen = 1 // 至少一个元素 默认长度 为1
	var index int = 0

	for _, num := range nums {
		if num != nums[index] {
			index++
			nums[index] = num
			newLen++
		}
	}

	return newLen
}
